/**
 * @author LKQ
 * @date 2022/2/21 13:51
 * @description 双指针
 */
public class FormalSolution2 {
    public static void main(String[] args) {
        FormalSolution2 f2 = new FormalSolution2();
        f2.pushDominoes(".L.R...LR..L..");
    }
    public String pushDominoes(String dominoes) {
        char[] s = dominoes.toCharArray();
        int n = s.length, i = 0;
        char left = 'L';
        while (i < n) {
            int j = i;
            while (j < n && s[j] == '.') {
                // 找到一段连续的并且没有被推动的骨牌
                j++;
            }
            char right = j < n ? s[j] : 'R';
            if (left == right) {
                // 方向相同，那么这些骨牌倒向同一方向
                while (i < j) {
                    s[i++] = right;
                }
            }else if (left == 'R' && right == 'L') {
                // 方向不同，从两侧向中间倒
                int k = j - 1;
                while (i < k) {
                    s[i++] = 'R';
                    s[k--] = 'L';
                }
            }
            left = right;
            i = j + 1;
        }
        return new String(s);
    }
}
